AWS Config アグリゲータの承認設定を CloudFormation で試してみた
AWS Organizations 環境ではない AWS Config アグリゲータの設定では、他のアカウントのデータを収集する際に、収集対象のアカウントで承認することで実現できます。この承認を CloudFormation で設定できることを最近知ったため試してみました。CloudFormation SlackSets により複数のリージョンをまとめて設定することもできます。
AWS Config アグリゲータの設定
今回の検証では AWS Config アグリゲータは下記画像の設定で作成する環境を利用します。アカウント欄にデータを収集したい対象のアカウント ID を指定します。アカウント欄には Config アグリゲータがあるアカウント自体を指定することもできます。
以降では、下記のアカウント ID で記載しています。例示の値となり、実際の設定とは異なります。
- Config アグリゲータのあるアカウント
111122223333
- Config アグリゲータの収集対象アカウント
444455556666
- 承認設定を追加するアカウント
AWS Config アグリゲータの認証の設定
Config アグリゲータの「認証」設定でデータの収集を承認します。まだ承認設定をしていないため、ステータスは「認証のリクエスト」となっています。
この状態において、次の CloudFormation テンプレートを用いて、全てのリージョンで承認設定を追加してみます。
AWSTemplateFormatVersion: 2010-09-09 Description: AWS Config Aggregation Authorization Parameters: ConfigAggregatorAccountID: Type: String Description: The 12-digit account ID of the account authorized to aggregate data AllowedPattern: ^\d{12}$ ConfigAggregatorRegion: Type: String Description: The region authorized to collect aggregated data MinLength: 1 MaxLength: 64 Default: ap-northeast-1 Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: AWS Config Aggregator Parameters: - ConfigAggregatorAccountID - ConfigAggregatorRegion Resources: ConfigAggregationAuthorization: Type: AWS::Config::AggregationAuthorization Properties: AuthorizedAccountId: !Ref ConfigAggregatorAccountID AuthorizedAwsRegion: !Ref ConfigAggregatorRegion
AWS::Config::AggregationAuthorization
タイプの詳細は次のユーザーガイドページに記載があります。パラメータの説明やパターンなどは本ページの内容を基に設定しています。
AWS::Config::AggregationAuthorization - AWS CloudFormation
承認は全てのリージョンで設定したいため、StackSets を利用します。
AWS Organizations 環境ではないことを想定して、SlackSets はセルフマネージドで展開します。セルフマネージドで展開するためには事前に IAM ロールの作成が必要となり、必要な IAM ロールは下記のユーザーガイドに記載されています。なお、今回は IAM ロール作成済みの環境で試しています。
セルフマネージド型のアクセス許可を付与する - AWS CloudFormation
ここからは StackSets の展開設定を記載します。
ステップ 1 では、テンプレートをアップロードします。AWS Organizations のメンバーアカウントで実行しているため、自動的にセルフマネージドの展開設定となっています。
ステップ 2 では、CloudFormation テンプレートのパラメータとして Config アグリゲータ設定があるアカウントとリージョンを指定します。
ステップ 3 は、今回はデフォルトのままで進めます。
ステップ 4 のデプロイオプションの設定では、展開先のアカウントとリージョンを指定します。今回は有効な全てのリージョンで並行実行する設定にしています。
最後に設定内容を確認して実行します。
ステータスがSUCEEDED
となれば、展開が完了です。「スタックインスタンス」タブからリージョン毎のステータスも確認できます。
CloudFormation 展開先のアカウント444455556666
において、Config アグリゲータの認証設定が「承認済」であることを確認できます。
AWS CLI で全てのリージョンを確認してみます。
次のコマンドを実行します。
aws --output text ec2 describe-regions --query "Regions[].[RegionName]" \ | while read region; do echo "### Describe aggregation authorizations in ${region}" aws configservice describe-aggregation-authorizations \ --query 'AggregationAuthorizations[*].{AuthorizedAccountId:AuthorizedAccountId,AuthorizedAwsRegion:AuthorizedAwsRegion}' \ --region ${region} done
実行結果例です。全てのリージョンで承認設定があることを確認できます。アカウント ID は例示の値に変更しています。
$ aws --output text ec2 describe-regions --query "Regions[].[RegionName]" \ > | while read region; do > echo "### Describe aggregation authorizations in ${region}" > aws configservice describe-aggregation-authorizations \ > --query 'AggregationAuthorizations[*].{AuthorizedAccountId:AuthorizedAccountId,AuthorizedAwsRegion:AuthorizedAwsRegion}' \ > --region ${region} > done ### Describe aggregation authorizations in ap-south-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in eu-north-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in eu-west-3 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in eu-west-2 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in eu-west-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in ap-northeast-3 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in ap-northeast-2 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in ap-northeast-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in ca-central-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in sa-east-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in ap-southeast-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in ap-southeast-2 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in eu-central-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in us-east-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in us-east-2 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in us-west-1 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ] ### Describe aggregation authorizations in us-west-2 [ { "AuthorizedAccountId": "111122223333", "AuthorizedAwsRegion": "ap-northeast-1" } ]
最後に、Config アグリゲータがあるアカウント111122223333
において、Config アグリゲータの設定を確認したところ、CloudFormation で承認設定を追加したアカウントのステータスがOK
になっていることも確認できました。
AWS CloudFormation で Config アグリゲータの承認設定ができることを確認できました。
さいごに
AWS Confifg アグリゲータの承認を CloudFormation で設定できることを知らなかったので試してみました。CloudFormation で設定できることでアカウントのベースラインとして Config アグリゲータを設定する場合などに活用できそうです。
以上、このブログがどなたかのご参考になれば幸いです。